Friday, December 13, 2019

[Qt] 按鈕的圖片在 runtime 不見

1. 先將圖片加入 .qrc 資源檔, action 的 icon 從資源檔選取.
2. 如果 action 的 icon 從檔案選圖片, 則需把圖片檔加到執行檔的資料夾 (注意圖片檔的路徑)

[Qt] 設定視窗圖示和EXE應用程式圖示

[Reference] https://blog.csdn.net/humanking7/article/details/85233449


Thursday, November 21, 2019

[Android] OnLocationChanged callback is never called



private LocationManager lms;
:
:
:
lms.requestLocationUpdates(lms.GPS_PROVIDER, 1000, 0, this); //lms.requestLocationUpdates(lms.NETWORK_PROVIDER, 1000, 0, this); // 在室內時 GPS_PROVIDER 無法提供更新位置, 所以也要用 NETWORK_PROVIDER

Monday, August 26, 2019

[OpenGL] VBO, glew, double buffer, support gdi, windows


在 Windows 系統的 OpenGL 程式,如果使用 PFD_SUPPORT_GDI 旗標 (Single Buffer),使用的 OpenGL 將會是 Microsoft 的軟體版本 (1.1.0),因而無法使用 VBO (至少需要 1.5 版以上) 。即在使用 Single Buffer 的情況下,無法使用 VBO。

glGetString(GL_VERSION) 可以取得 OpenGL 版本

變通的方法如下:
    1. 仍然使用 Double Buffer.
    2. 圖形繪製到 Front Buffer: glDrawBuffer(GL_FRONT)
    3. 繪製圖形的程式碼結束後,使用 glFlush() 送出,而不是使用 SwapBuffers()
    4. 可使用 VBO.





Friday, August 16, 2019

[Android] Migrating to AndroidX

[狀況說明]

  1. 舊程式遷移至 AndroidX, 使用一鍵修改法和一堆有的沒有的.
  2. 程式可編譯.
  3. 執行時, 在 [MainActivity.java] setContentView() 報錯.
Error inflating class android.support.design.widget.CoordinatorLayout

Didn’t find class “android.support.design.widget.CoordinatorLayout” on path: …



[解決方法]
  1. 在 mainlayout.xml 裏還有使用 android.support.design.widget.CoordinatorLayout 及其他舊類別的東東, 參照下面連結的表格修改.

Saturday, February 23, 2019

[C++ Builder] Cannot add 64-bit windows platform


1. Open project file (*.cbproj) from a text editor.
2. Find <Platforms>, it may looks like:

<Platforms>
<Platform value="Win32">True</Platform>
</Platforms>

3. Add   <Platform value="Win64">True</Platform> 

<Platforms>
<Platform value="Win32">True</Platform>
<Platform value="Win64">True</Platform>
</Platforms>

4. Save project file.
5 Reopen the project.


[Reference] https://forums.embarcadero.com/message.jspa?messageID=823436

[C++ Builder] FLOAT_INVALID_OVERFLOW!! SetExceptionMask !!

Error FLOAT_INVALID_OVERFLOW occurred when calling a function from a DLL build by VC from C++ Builder? This is a problem of C++ Build and solve if by calling SetExceptionMask before calling your Dll.

Example:


#include <System.Math.hpp>

typedef int (*PFNAddFunction)(int, int);

void testDllCall()
{
  //Mask Exception
  TFPUExceptionMask fExceptionMask ;
  fExceptionMask=GetExceptionMask();
  fExceptionMask << exInvalidOp;
  fExceptionMask <<  exDenormalized;
  fExceptionMask <<  exZeroDivide;
  fExceptionMask << exOverflow;
  fExceptionMask << exUnderflow;
  fExceptionMask << exPrecision;
  SetExceptionMask(fExceptionMask);
  //Call DLL
  HMODULE _dll=LoadLibraryA("dllName.dll");
  if(_dll != NULL) {
    PFNAddFunction myAdd = (PFNAddFunction)GetProcAddress(_dll,"funcAdd");
    myAdd(1,2)
    FreeLibrary(_dll);
  }
}
[Reference]
https://delphi.fandom.com/wiki/SetExceptionMask_Routine
http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Math.SetExceptionMask

[Qt] 執行檔需要哪些 Dll?

 1. 使用 Qt  的 windeployqt.exe 工具 (在 C:\Qt\Qt5.14.1\5.14.1\msvc2017\bin\)。   a. 把執行檔 myProgram.exe 放在某個資料夾。   b. 在檔案總管這個資料夾按 Shift 和滑鼠右鍵,開啟 Po...